package com.nts.pmchelperdemo3.controller;

import com.nts.pmchelperdemo3.result.Result;
import com.nts.pmchelperdemo3.util.ResultUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.nts.pmchelperdemo3.dto.*;
import com.nts.pmchelperdemo3.service.*;

import java.util.List;

/**
 * 机器管理控制器（查询机器状态、负载、排班截止日期等）
 */
@RestController
@RequestMapping("/api/machines")
@Api(tags = "机器管理接口")
public class MachineController {

    @Autowired
    private MachineService machineService;

    /**
     * 查询所有机器状态（含当前排班截止日期）
     */
    @GetMapping
    @ApiOperation("查询所有机器状态（磨刀机/涂层机）")
    public Result<List<MachineLoadDTO>> getAllMachines(
            @RequestParam(required = false) Integer machineType) {  // 可选：0-磨刀机，1-涂层机
        List<MachineLoadDTO> machines = machineService.getAllMachines(machineType);
        return ResultUtil.success(machines, "机器状态查询成功");
    }

    /**
     * 查询单台机器的排班截止日期
     */
    @GetMapping("/{machineName}/deadline")
    @ApiOperation("查询单台机器的当前排班截止日期")
    public Result<MachineLoadDTO> getMachineDeadline(@PathVariable String machineName) {
        MachineLoadDTO machineLoad = machineService.getMachineDeadline(machineName);
        return ResultUtil.success(machineLoad, "机器排班截止日期查询成功");
    }

    /**
     * 查询机器负载状态（按类型分组）
     */
    @GetMapping("/load")
    @ApiOperation("查询机器负载状态（按类型统计）")
    public Result<List<MachineLoadDTO>> getMachineLoadByType() {
        List<MachineLoadDTO> loadStats = machineService.getMachineLoadByType();
        return ResultUtil.success(loadStats, "机器负载状态查询成功");
    }

    @GetMapping("/count")
    @ApiOperation("获取可用的机器数")
    public Result<Integer> getAvailableMachineCount(){
        int count = machineService.countAvailableMachine();
        return ResultUtil.success(count,"查询可用机器数成功");
    }
}
